package main

import (
	"ginBasic/app/common/lib"
	"ginBasic/initialize"
	"github.com/gin-contrib/cors"
	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
	"html/template"
	"time"

	"ginBasic/routers"
)

func main() {
	//创建一个默认的路由引擎
	r := gin.Default()
	//配置gin允许跨域请求
	//配置gin允许跨域请求
	r.Use(cors.New(cors.Config{
		AllowMethods:     []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"},
		AllowHeaders:     []string{"Origin", "Content-Length", "Content-Type", "Authorization"},
		AllowCredentials: false,
		MaxAge:           12 * time.Hour,
		ExposeHeaders:    []string{"Content-Length"},
		AllowOriginFunc: func(origin string) bool {
			return true
		},
	}))

	//初始化
	initialize.InitConfig()
	initialize.InitDB()

	//注册全局模板函数 注意顺序，注册模板函数需要在加载模板上面（需要定义你设置的函数）
	r.SetFuncMap(template.FuncMap{
		"UnixToTime": lib.UnixToTime,
	})
	//加载模板 放在配置路由前面
	r.LoadHTMLGlob("templates/**/**/*")
	//配置静态web目录 第一个参数表示路由 第二个参数表示映射的目录
	r.Static("/static", "./static")

	// 创建基于 cookie 的存储引擎，secret11111 参数是用于加密的密钥
	store := cookie.NewStore([]byte("secret111"))
	//配置session的中间件 store是前面创建的存储引擎，我们可以替换成其他存储引擎
	r.Use(sessions.Sessions("mysession", store))

	routers.AdminRoutersInit(r)
	r.Run(":9090")

}
